centos-docker安装

安装docker ce版本

  • 清理老版本docker
yum remove docker \
              docker-common \
              docker-selinux \
              docker-engine
  • 安装虚拟工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
  • 获取最新ce版本的repo
yum-config-manager \
   --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
  • 查看安装版本

     `yum list docker-ce --showduplicates | sort -r`
    
  • 安装ce版本

    yum install docker-ce

  • 启动docker

    systemctl start docker

docker 配置

如果你不是使用yum安装的flannel,那么需要下载flannel github release中的tar包,

解压后会获得一个mk-docker-opts.sh文件,到flannel release页面下载对应版本的安装包,

该脚本见mk-docker-opts.sh,因为我们使用yum安装所以不需要执行这一步

这个文件是用来Generate Docker daemon options based on flannel env file

使用systemctl命令启动flanneld后,会自动执行./mk-docker-opts.sh -i生成如下两个文件环境变量文件

  • /run/flannel/subnet.env
FLANNEL_NETWORK=172.30.0.0/16
FLANNEL_SUBNET=172.30.46.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
  • /run/docker_opts.env
DOCKER_OPT_BIP="--bip=172.30.46.1/24"
DOCKER_OPT_IPMASQ="--ip-masq=true"
DOCKER_OPT_MTU="--mtu=1450"

Docker将会读取这两个环境变量文件作为容器启动参数

注意:不论您用什么方式安装的flannel,下面这一步是必不可少的

  • docker.service文件中添加如下环境变量文件,确保万一 docker 17.12.0-ce版本使用如下service文件
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer
[Service]
Type=notify
NotifyAccess=all
EnvironmentFile=-/run/flannel/docker
EnvironmentFile=-/run/docker_opts.env
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
EnvironmentFile=-/run/docker_opts.env
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd \
      --exec-opt native.cgroupdriver=systemd \
      $DOCKER_OPT_BIP \
      $DOCKER_OPT_IPMASQ \
      $DOCKER_OPT_MTU \
      -s=overlay2 \
      --log-driver=json-file 
#      --insecure-registry=sz-pg-oam-docker-hub-001.tendcloud.com
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
MountFlags=slave
[Install]
WantedBy=multi-user.target
  • docker.service文件中添加如下环境变量文件,确保万一 docker 18.03.0-ce版本使用如下service文件
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
EnvironmentFile=-/run/docker_opts.env
EnvironmentFile=-/run/flannel/subnet.env
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
EnvironmentFile=-/run/docker_opts.env

ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd \
                           $DOCKER_OPT_BIP \
                     $DOCKER_OPT_IPMASQ \
                     $DOCKER_OPT_MTU \
                     -s=overlay2 \
                     --log-driver=json-file

ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

请注意: docker ce 17 与 18的service配置不一样,如17就使用17service文件,如18请使用18文件,不然在18中使用17版本文件,使用 systemctl 操作时unit启动会失败

  • docker.service 需要添加如下配置,为确保cgroup driver一致

ExecStart中添加 --exec-opt native.cgroupdriver=systemd

  • 启动docker
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

ansible 脚本


---
- hosts: all
  remote_user: root
  gather_facts: False
  tasks:
      - name: 清理老版本
        shell: yum remove docker docker-common docker-selinux docker-engine
      - name: 安装工具
        shell: yum install -y yum-utils device-mapper-persistent-data lvm2
      - name: 获取最新ce
        shell: yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      - name: 安装ce
        shell: yum -y install docker-ce
        register: result
      - name: 输出信息
        debug: var=result.stdout
      - name: 启动
        shell: systemctl start docker

results matching ""

    No results matching ""